Presto এবং Hive একসাথে ব্যবহার করলে, Presto Hive-এর ডেটা সোর্স থেকে ডেটা পড়তে এবং বিশ্লেষণ করতে সক্ষম হয়। Hive সাধারণত Hadoop এর ওপর ডেটা সংরক্ষণ করার জন্য ব্যবহৃত হয়, এবং Presto Hive-এর ডেটা ত্বরাৎগতিতে বিশ্লেষণ করতে সক্ষম হয়। Presto তে Hive Integration প্রক্রিয়া সোজা এবং বেশ কার্যকর, কারণ এটি হাইভের ডেটা স্টোরেজ এবং মেটাডেটা ব্যবস্থাপনার সুবিধা ব্যবহার করে।
Presto হাইভের সাথে কীভাবে কাজ করে তা বিশদভাবে জানার জন্য নিচে ধাপে ধাপে নির্দেশনা দেওয়া হলো:
Presto হাইভের সাথে সংযোগ স্থাপন করতে হলে, প্রথমে Presto-র হাইভ কানেক্টর কনফিগার করতে হবে।
Presto তে Hive এর সাথে কাজ করার জন্য, Hive Connector ইনস্টল করা প্রয়োজন। Hive connector Presto তে ডেটাবেস, টেবিল, স্কিমা এবং অন্যান্য মেটাডেটা অনুসন্ধান করতে সহায়ক। Presto তে Hive connector এর জন্য একটি .properties
ফাইল তৈরি করতে হবে যা Presto সার্ভারের etc/catalog/
ডিরেক্টরিতে রাখা হবে।
/etc/catalog/hive.properties
এখানে Hive connector কনফিগারেশন:
connector.name=hive
hive.metastore.uri=thrift://localhost:9083
hive.config.resources=/etc/hive/conf/core-site.xml,/etc/hive/conf/hdfs-site.xml
connector.name=hive
এই সেটিং Hive কানেক্টরের জন্য নিশ্চিত করবে।hive.metastore.uri
Hive এর মেটাস্টোর URI সঠিকভাবে উল্লেখ করতে হবে। এটি সাধারণত thrift://<host>:<port>
এর মতো হয়।hive.config.resources
এখানে Hive এর কনফিগারেশন ফাইলের পাথ উল্লেখ করতে হবে, যেমন core-site.xml
এবং hdfs-site.xml
।Presto Hive মেটাস্টোরের সাথে সংযোগ স্থাপন করতে, Hive এর মেটাস্টোর কনফিগারেশন ফাইলটি সঠিকভাবে সেটআপ করতে হবে। Hive মেটাস্টোর সাধারণত Thrift প্রোটোকল ব্যবহার করে কাজ করে।
এটি Hive এর জন্য কনফিগারেশন ফাইলের মাধ্যমে Presto তে অ্যাক্সেস করা সম্ভব হয়। Hive মেটাস্টোর থ্রিফট সার্ভিস চালু থাকতে হবে এবং Presto এই সার্ভিসের মাধ্যমে মেটাডেটা গ্রহণ করবে।
Presto তে Hive-এর ডেটার ওপর কোয়েরি চালানোর জন্য আপনাকে Hive-এর স্কিমা, টেবিল এবং কলাম গুলির সাথে কাজ করতে হবে। একবার Hive connector কনফিগার করা হয়ে গেলে, আপনি Presto তে Hive ডেটাসোর্স থেকে ডেটা পড়তে এবং বিশ্লেষণ করতে পারবেন।
Presto তে Hive এর ডেটাবেস বা টেবিলের উপর সাধারণ SQL কোয়েরি চালানো যেতে পারে:
SELECT * FROM hive.default.my_table LIMIT 10;
এখানে:
hive
হচ্ছে connector নাম (আপনি যেটি .properties
ফাইলে উল্লেখ করেছেন)।default
হচ্ছে Hive-এর ডিফল্ট স্কিমা।my_table
হচ্ছে Hive-এ থাকা টেবিলের নাম।Presto তে Hive ডেটা সুত্রের উপর Aggregation এবং Grouping করতে নিম্নলিখিত কোয়েরি ব্যবহার করা যেতে পারে:
SELECT column1, COUNT(*)
FROM hive.default.my_table
GROUP BY column1;
এটি Hive-এ সংরক্ষিত ডেটার উপর গ্রুপিং এবং গণনা করবে।
Hive তে Partitioning এবং Bucketing ব্যবহার করা হয় বড় ডেটাসেটের জন্য। Presto Hive-এ Partitioned এবং Bucketed টেবিলগুলো সঠিকভাবে কুয়েরি করতে পারে।
Hive-এ Partitioned টেবিলের উপর Presto কুয়েরি করতে:
SELECT * FROM hive.default.partitioned_table WHERE partition_column = '2024-11-27';
এই কুয়েরি Hive Partitioned টেবিল থেকে নির্দিষ্ট Partition সিলেক্ট করে ডেটা নিয়ে আসবে।
Hive Bucketing ব্যবহার করার সময় Presto ডেটার একটি নির্দিষ্ট Buckets থেকে তথ্য নিয়ে আসতে পারে:
SELECT * FROM hive.default.bucketed_table WHERE bucket_column = 'value';
Presto এর মাধ্যমে Hive ডেটার উপর কুয়েরি চালানোর সময় পারফরম্যান্স অপ্টিমাইজেশন গুরুত্বপূর্ণ। কিছু কৌশল নিম্নরূপ:
Presto তে Hive মেটাডেটা ক্যাশিং ব্যবহার করে পারফরম্যান্স বাড়ানো সম্ভব। এটি মেটাডেটার উপর অতিরিক্ত কল হওয়া কমাতে সাহায্য করে।
hive.metastore.cache-ttl=10m
এটি Hive মেটাস্টোর মেটাডেটা ক্যাশিংয়ের TTL (Time-to-Live) নির্ধারণ করে।
Presto এবং Hive ইন্টিগ্রেশন খুবই শক্তিশালী এবং এটি একটি দ্রুত SQL কোয়েরি ইঞ্জিন হিসেবে Hive এর বিশাল ডেটা সেটের উপর কাজ করতে সাহায্য করে। Hive এর মেটাডেটা ব্যবস্থাপনা এবং Presto এর দ্রুত কুয়েরি প্রক্রিয়াকরণ ক্ষমতা একত্রিত হলে বড় ডেটাসেটের উপর কার্যকরী বিশ্লেষণ করা যায়। Hive এবং Presto এর মধ্যে দক্ষ ইন্টিগ্রেশন পারফরম্যান্স অপ্টিমাইজেশনের মাধ্যমে আরও কার্যকরী হতে পারে।
Presto একটি ডিস্ট্রিবিউটেড SQL কোয়েরি ইঞ্জিন, যা বিভিন্ন ডেটা সোর্স থেকে ডেটা একত্রে বিশ্লেষণ করতে সক্ষম। Hive Integration দ্বারা আপনি Hive ডেটাবেসে সংরক্ষিত ডেটার উপর SQL কোয়েরি চালাতে পারেন। Presto এবং Hive এর একত্রে কাজ করার ফলে, আপনি Hive-এ সংরক্ষিত ডেটা দ্রুত এবং কার্যকরভাবে প্রসেস করতে পারবেন, কারণ Presto এর মধ্যে ডিস্ট্রিবিউটেড প্রসেসিং এবং ইন্টারেক্টিভ কোয়েরি এক্সিকিউশনের ক্ষমতা রয়েছে।
এখানে আমরা দেখবো কীভাবে Presto তে Hive এর সাথে সংযোগ স্থাপন করা যায় এবং ডেটা বিশ্লেষণের জন্য কীভাবে কোয়েরি চালানো যায়।
Presto তে Hive সংযোগ করতে Hive Connector ব্যবহার করতে হবে। এটি /etc/presto/catalog/
ডিরেক্টরিতে একটি .properties
ফাইল তৈরি করে কনফিগার করতে হবে।
hive.properties
connector.name=hive
hive.metastore.uri=thrift://<hive-metastore-host>:9083
hive.config.resources=/etc/hadoop/core-site.xml,/etc/hadoop/hdfs-site.xml
hive.s3.aws-access-key=<your-access-key>
hive.s3.aws-secret-key=<your-secret-key>
thrift://<hive-metastore-host>:9083
)।core-site.xml
এবং hdfs-site.xml
।Presto Hive এর সাথে কাজ করার জন্য, Hive মেটাস্টোর এবং HDFS এর সাথে কনফিগারেশন করা প্রয়োজন। Hive মেটাস্টোর সাধারণত Thrift সার্ভিসের মাধ্যমে কাজ করে, যা Hive ডেটাবেস ম্যানেজমেন্টের জন্য ব্যবহৃত হয়।
Hive মেটাস্টোর সার্ভিস চালু করা:
Hive মেটাস্টোর সার্ভিস চালু করতে নিম্নলিখিত কমান্ড ব্যবহার করুন:
hive --service metastore
HDFS কনফিগারেশন ফাইল আপডেট:
HDFS থেকে ডেটা এক্সেস করার জন্য Presto-তে core-site.xml
এবং hdfs-site.xml
কনফিগারেশন ফাইল গুলি সঠিকভাবে কনফিগার করা থাকতে হবে।
এই ফাইলগুলি /etc/presto
ডিরেক্টরিতে রাখুন এবং Presto কনফিগারেশন ফাইলের সাথে সেগুলি রেফার করুন।
নতুন কনফিগারেশন ফাইল তৈরি করার পর, Presto সার্ভার রিস্টার্ট করতে হবে।
cd /opt/presto
bin/launcher restart
এটি সমস্ত পরিবর্তন লোড করবে এবং Presto সার্ভারকে নতুন Hive কনফিগারেশন অনুযায়ী পুনরায় চালু করবে।
Hive এর সাথে সফলভাবে সংযোগ স্থাপন করার পরে, আপনি Presto CLI বা Web UI ব্যবহার করে Hive ডেটাবেসে কোয়েরি চালাতে পারবেন। উদাহরণস্বরূপ:
CLI কোয়েরি উদাহরণ:
presto --server <presto-server>:8080 --catalog hive --schema default
এখানে, --catalog hive
নির্দেশ করে যে আপনি Hive ডেটাবেস থেকে ডেটা এক্সেস করতে চান, এবং --schema default
Hive-এর ডিফল্ট স্কিমা নির্দেশ করে।
SQL কোয়েরি উদাহরণ:
SELECT * FROM hive.default.orders WHERE order_status = 'shipped';
এই কোয়েরিটি Hive ডেটাবেসের orders
টেবিল থেকে order_status
ফিল্টার করে ডেটা ফেরত আনবে।
Presto-র মাধ্যমে Hive ডেটাবেসে সংযোগ স্থাপন করে, আপনি Hive ডেটাসেটের উপর SQL কোয়েরি চালাতে পারবেন এবং ডিস্ট্রিবিউটেড প্রসেসিংয়ের মাধ্যমে দ্রুত ডেটা বিশ্লেষণ করতে পারবেন। Hive মেটাস্টোর, HDFS, এবং S3 এর সঠিক কনফিগারেশন এবং Presto Hive Connector ব্যবহার করে সহজেই এই সংযোগ তৈরি করা সম্ভব। একবার সংযুক্ত হলে, Presto এর সাথে Hive ডেটাবেসে কাজ করা অত্যন্ত দ্রুত এবং কার্যকরী হয়, যা বড় ডেটাসেট বিশ্লেষণে সাহায্য করে।
Presto এবং Hive একত্রে কাজ করতে পারে, যেখানে Presto Hive ডেটাবেসের উপর SQL কোয়েরি চালাতে সক্ষম। Hive হলো একটি ডেটাবেস ম্যানেজমেন্ট সিস্টেম যা Hadoop এর উপর তৈরি, যা বড় ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। Presto Hive এর সাথে সংযুক্ত হয়ে, SQL কোয়েরি চালানোর মাধ্যমে দ্রুত ডেটা অ্যাক্সেস ও বিশ্লেষণ প্রদান করে। তবে, এই কোয়েরি এক্সিকিউশন প্রক্রিয়া এবং অপ্টিমাইজেশন বুঝতে গুরুত্বপূর্ণ।
এই টিউটোরিয়ালে আমরা Hive-এর সাথে Query Execution এবং Query Optimization প্রক্রিয়া আলোচনা করব।
Presto Hive Connector ব্যবহার করে আপনি Hive ডেটাবেসে SQL কোয়েরি চালাতে পারেন। Hive এর Query Execution Process সাধারণত নিম্নলিখিত ধাপে সম্পন্ন হয়:
প্রথমে, Hive থেকে আসা SQL কোয়েরি Presto এর মাধ্যমে পার্স করা হয় এবং একটি logical execution plan তৈরি করা হয়। Presto এই পার্সড কোয়েরি হ্যান্ডেল করে এবং সেই অনুযায়ী অপারেশনগুলো সঠিকভাবে মডিফাই এবং পরিকল্পনা করে।
Presto কোয়েরি পরিকল্পনা এবং অপ্টিমাইজেশন প্রক্রিয়া সম্পন্ন করার জন্য query optimizer ব্যবহার করে। এটি বিভিন্ন অপ্টিমাইজেশন কৌশল প্রয়োগ করে, যেমন filter pushdown, join reorder, predicate pushdown, ইত্যাদি।
Presto, Hive-এর সাথে সংযুক্ত হওয়ার পর, Query Execution Phase শুরু হয়। Presto এই কোয়েরি ক্লাস্টারে ডিসট্রিবিউটেড করে এবং Worker Nodes এ কোয়েরির কাজ বিভাজন করে। এখানে, কাজের প্রক্রিয়া MapReduce-এর মত হতে পারে যেখানে বিভিন্ন স্টেপে ডেটা প্রক্রিয়া করা হয় এবং পরিশেষে ফলাফল সরবরাহ করা হয়।
কোয়েরি এক্সিকিউশন সম্পন্ন হলে, Worker Nodes থেকে প্রক্রিয়াকৃত ফলাফল Coordinator Node এ পাঠানো হয় এবং পরবর্তীতে ব্যবহারকারীকে ফলাফল সরবরাহ করা হয়।
Presto-এর মাধ্যমে Hive কোয়েরি অপ্টিমাইজেশন বেশ কিছু কৌশল ব্যবহার করে, যা কোয়েরির কার্যকারিতা এবং পারফরম্যান্স উন্নত করতে সাহায্য করে। নিচে কিছু গুরুত্বপূর্ণ Hive Query Optimization কৌশল আলোচনা করা হলো:
Filter Pushdown হল একটি অপ্টিমাইজেশন কৌশল যেখানে কোয়েরির WHERE clause -এ থাকা শর্তগুলি Hive-এ যত দ্রুত সম্ভব প্রয়োগ করা হয়। এর ফলে, ডেটা প্রক্রিয়াকরণ ক্লাস্টারে শুরু হওয়ার আগেই যতটা সম্ভব ফিল্টার হয়ে যায়, যার ফলে কম ডেটা প্রসেস করতে হয়।
উদাহরণ:
SELECT * FROM hive.default.orders WHERE order_status = 'shipped';
এই কোয়েরি Presto Hive Connector দ্বারা filter pushdown করা হবে, যাতে শুধুমাত্র order_status = 'shipped'
শর্তে মেলে এমন ডেটাই Hive-এ প্রসেস করা হয়।
Predicate Pushdown হল আরেকটি অপ্টিমাইজেশন কৌশল যেখানে SQL কোয়েরির শর্তগুলি Hive মেটাস্টোরের স্তরে প্রয়োগ করা হয়। এটি কার্যকরীভাবে filtering এবং projection কে Hive এর স্তরে স্থানান্তরিত করে, Presto-তে কম ডেটা নিয়ে আসতে সাহায্য করে।
Hive ডেটাবেসে সাধারণত ডেটা পার্টিশন আকারে ভাগ করা থাকে (যেমন পার্টিশন করা হয় date
, region
, ইত্যাদি অনুযায়ী)। Presto partition pruning কৌশল ব্যবহার করে শুধুমাত্র প্রয়োজনীয় পার্টিশন থেকে ডেটা নির্বাচন করে, যা কোয়েরি এক্সিকিউশনের সময় দ্রুত ফলাফল প্রদান করে।
উদাহরণ:
SELECT * FROM hive.default.sales WHERE sale_date = '2024-11-01';
এখানে, Presto Hive-এ partition pruning করতে সক্ষম হবে এবং শুধুমাত্র sale_date = '2024-11-01'
সাপেক্ষে পার্টিশন থেকে ডেটা নিয়ে আসবে।
যখন Hive ডেটাবেসে Presto কোয়েরি চালানো হয় এবং সেখানে JOIN অপারেশন থাকে, তখন join optimization এর মাধ্যমে কোয়েরি পারফরম্যান্স বৃদ্ধি পায়। Presto এমন কিছু অপ্টিমাইজেশন কৌশল ব্যবহার করে যেমন:
উদাহরণ:
SELECT o.customer_id, o.amount, p.product_name
FROM hive.default.orders o
INNER JOIN hive.default.products p
ON o.product_id = p.product_id;
এখানে, Presto Hive-এ join optimization প্রয়োগ করে কার্যকরীভাবে দ্রুত ফলাফল প্রাপ্ত করবে।
Presto Hive-এর সাথে সংযুক্ত হয়ে Aggregation Operations যেমন COUNT
, SUM
, AVG
ইত্যাদি Hive স্তরে প্রয়োগ করতে পারে, যাতে কম ডেটা প্রক্রিয়া করা হয়।
উদাহরণ:
SELECT customer_id, COUNT(*)
FROM hive.default.orders
GROUP BY customer_id;
এই কোয়েরিতে Aggregation Pushdown করা হবে, যাতে Hive স্তরে COUNT অপারেশনটি প্রক্রিয়া হয় এবং তারপর ফলাফল Presto-তে পাঠানো হয়।
Presto-তে EXPLAIN
কিওয়ার্ড ব্যবহার করে আপনি আপনার কোয়েরির এক্সিকিউশন প্ল্যান দেখতে পারেন, যা আপনাকে কোয়েরি অপ্টিমাইজেশন বুঝতে সাহায্য করে।
EXPLAIN SELECT * FROM hive.default.orders WHERE order_status = 'shipped';
এটি আপনাকে কোয়েরির প্রক্রিয়াকরণের বিস্তারিত বিবরণ দেখাবে, যেখানে আপনি বিভিন্ন অপ্টিমাইজেশন স্টেপগুলো পর্যবেক্ষণ করতে পারবেন।
Presto এর কোয়েরি এক্সিকিউশনের সময় Query Execution Logs-এ লগ আউটপুট দেখতে পাবেন যা কোয়েরির বিভিন্ন স্টেপ ও অপ্টিমাইজেশন কৌশল সম্পর্কে তথ্য প্রদান করবে। এই লগগুলি পারফরম্যান্স টিউনিংয়ের জন্য খুবই উপকারী।
Presto-তে Hive ডেটা সোর্স সংযোগ করতে Hive Metastore ব্যবহার করা হয়। Hive Metastore হলো Hive-এর একটি গুরুত্বপূর্ণ উপাদান, যা Hive ডেটাবেসের মেটাডেটা (যেমন টেবিল স্কিমা, কলাম, ফাইলের লোকেশন) সঞ্চয় করে এবং সেগুলিকে সিস্টেমে সঠিকভাবে পরিচালনা করতে সাহায্য করে।
Presto Hive Connector এর মাধ্যমে Hive ডেটাবেসের সাথে সংযোগ করার জন্য Hive Metastore কনফিগারেশন গুরুত্বপূর্ণ। এখানে আমরা Hive Metastore কনফিগারেশন প্রক্রিয়া বিস্তারিতভাবে দেখাব।
Presto-তে Hive সংযোগ করার জন্য, আপনাকে Hive Metastore URI নির্ধারণ করতে হবে, যাতে Presto Hive ডেটাবেসের মেটাডেটা অ্যাক্সেস করতে পারে। এই কনফিগারেশন ফাইলটি /etc/presto/catalog/
ডিরেক্টরিতে রাখতে হবে এবং hive.properties
ফাইল তৈরি করতে হবে।
Hive Metastore URI হলো Hive মেটাস্টোরের থ্রিফট সার্ভিসের URI। এটি সাধারণত thrift://<hive_metastore_host>:<port>
ফরম্যাটে থাকে। এই URI Presto-কে Hive মেটাস্টোরের সাথে সংযোগ স্থাপন করতে সাহায্য করে।
hive.properties কনফিগারেশন ফাইল:
connector.name=hive
hive.metastore.uri=thrift://<hive_metastore_host>:9083
hive.config.resources=/etc/hadoop/core-site.xml,/etc/hadoop/hdfs-site.xml
এখানে:
hive.metastore.uri
: এটি Hive মেটাস্টোরের থ্রিফট URI। <hive_metastore_host>
আপনার Hive মেটাস্টোর সার্ভারের হোস্টনেম বা আইপি এবং 9083
পোর্ট Hive-এর ডিফল্ট পোর্ট।hive.config.resources
: এটি Hive এবং HDFS কনফিগারেশন ফাইলের পথ। আপনি যদি S3 ব্যবহার করেন, তবে hive.s3.aws-access-key
এবং hive.s3.aws-secret-key
কনফিগারেশনও যোগ করতে হবে।Hive Metastore সার্ভিস চালু করতে এবং সেটি Presto-তে সংযোগ স্থাপনের জন্য Hive-এর মেটাস্টোর সার্ভিস চালু থাকতে হবে।
Hive মেটাস্টোর চালানোর জন্য নিচের কমান্ড ব্যবহার করুন:
hive --service metastore
এটি Hive মেটাস্টোর সার্ভিস শুরু করবে যা Presto-এর সাথে সংযুক্ত হতে সক্ষম হবে।
Presto-তে Hive এর টেবিলের মেটাডেটা অ্যাক্সেস করতে হলে, আপনি Presto CLI বা Presto Web UI ব্যবহার করতে পারেন।
Presto CLI Example:
SELECT * FROM hive.<schema_name>.<table_name>;
এখানে, <schema_name>
হলো Hive স্কিমা এবং <table_name>
হলো Hive টেবিলের নাম।
যদি আপনি Hive Metastore-তে S3 বা অন্য কোনো ক্লাউড স্টোরেজ ব্যবহার করতে চান, তবে আপনাকে S3-এর জন্য অতিরিক্ত কনফিগারেশন করতে হবে।
S3 Configuration Example:
hive.s3.aws-access-key=<your-aws-access-key>
hive.s3.aws-secret-key=<your-aws-secret-key>
hive.metastore.uri=thrift://<hive_metastore_host>:9083
এখানে hive.s3.aws-access-key
এবং hive.s3.aws-secret-key
আপনার AWS অ্যাক্সেস কী এবং সিক্রেট কী।
Hive Metastore কনফিগারেশন সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করার জন্য আপনি Hive মেটাস্টোর সার্ভিসের লগ চেক করতে পারেন। লগ চেক করার জন্য আপনাকে Hive মেটাস্টোর ডিরেক্টরিতে লগ ফাইল খুঁজে দেখতে হবে, যেটি সাধারণত /var/log/hive/
এ থাকে।
এইভাবে Presto Hive Metastore কনফিগারেশন সম্পন্ন হলে, Presto সফলভাবে Hive ডেটাবেসের সাথে সংযুক্ত হতে পারে এবং SQL কোয়েরি চালাতে পারবে।
Presto-তে Hive সংযোগের মাধ্যমে বড় ডেটাসেটগুলির উপর কোয়েরি এক্সিকিউশন দ্রুততর এবং কার্যকরী করা সম্ভব। Hive তে Partitioning এবং Bucketing ব্যবহৃত হয় ডেটা শার্ডিং এবং স্পর্শকাতর কোয়েরি পারফরম্যান্স অর্জনের জন্য। Presto এ Hive Partitioning এবং Bucketing ব্যবহার করার মাধ্যমে কোয়েরির কার্যকারিতা উন্নত করা যায় এবং ডেটার মধ্যে আরো ভালো পারফরম্যান্স পাওয়া যায়।
Partitioning হল ডেটার বিভাজন যাতে ডেটা একাধিক ভাগে ভাগ করা যায়, এবং প্রতিটি ভাগ আলাদা ফাইল বা ডিরেক্টরিতে সংরক্ষিত থাকে। Hive Partitioning সাধারণত বড় ডেটাসেটগুলির জন্য ব্যবহৃত হয়, যেখানে কিছু কলামের মানের ভিত্তিতে ডেটাকে ভাগ করা হয় (যেমন, date
, region
, বা year
ইত্যাদি)।
Presto তে Hive Partitioning ব্যবহার:
Presto তে Hive Partitioning ব্যবহার করার জন্য আপনাকে Hive তে একটি Partitioned Table তৈরি করতে হবে, এবং Presto এই পার্টিশনগুলির উপর কোয়েরি চালাবে। Partitioning মূলত filtering এবং pruning প্রক্রিয়া উন্নত করে, কারণ Presto সঠিক পার্টিশন গুলি নির্বাচন করে ডেটা প্রসেস করে।
CREATE TABLE orders (
order_id INT,
order_date DATE,
amount DECIMAL
)
PARTITIONED BY (year INT, month INT);
INSERT INTO orders PARTITION (year = 2022, month = 01)
VALUES (1, '2022-01-01', 100.00);
Presto দিয়ে partitioned Hive টেবিল থেকে কোয়েরি চালানোর সময় Presto সঠিক পার্টিশন থেকে ডেটা স্ক্যান করবে:
SELECT * FROM hive.default.orders WHERE year = 2022 AND month = 01;
এখানে Presto শুধুমাত্র year = 2022
এবং month = 01
পার্টিশন স্ক্যান করবে, পুরো টেবিল স্ক্যান করবে না।
Bucketing হল একটি টেকনিক যা ডেটাকে একটি নির্দিষ্ট সংখ্যক বাকেটে ভাগ করে। প্রতিটি বাকেট আলাদা ফাইল বা ডিরেক্টরিতে সংরক্ষিত থাকে এবং একটি কনস্ট্যান্ট ফাংশন (যেমন hash
ফাংশন) ব্যবহার করে ডেটাকে বিভক্ত করা হয়। Bucketing সাধারণত JOIN এবং GROUP BY অপারেশনগুলোকে আরও দ্রুত করে।
Presto তে Hive Bucketing ব্যবহার করতে হলে, প্রথমে Hive তে Bucketed Table তৈরি করতে হবে, তারপর Presto ঐ Buckets এর উপর কোয়েরি চালাবে। Bucketing নির্দিষ্ট কলামের মানের ভিত্তিতে ডেটা ভাগ করে, এবং এটি JOIN বা GROUP BY অপারেশনগুলির পারফরম্যান্স উন্নত করে।
CREATE TABLE orders (
order_id INT,
customer_id INT,
amount DECIMAL
)
CLUSTERED BY (customer_id) INTO 4 BUCKETS;
এখানে customer_id
কলামের উপর Bucketing করা হয়েছে এবং ৪টি Bucket তৈরি করা হয়েছে।
INSERT INTO orders
VALUES (1, 101, 100.00), (2, 102, 200.00), (3, 103, 150.00);
Presto Bucketing সমর্থন করে, এবং এটি Buckets থেকে দ্রুত ডেটা প্রসেস করতে পারে। Presto দিয়ে Bucketing ব্যবহার করে কোয়েরি চালানো:
SELECT * FROM hive.default.orders WHERE customer_id = 101;
Presto, Hive Bucketing থেকে দ্রুত ডেটা সিলেক্ট করবে, কারণ customer_id
Bucketing কলাম এবং ডেটা ঐ একই বকেটে রয়েছে।
পার্থক্য | Partitioning | Bucketing |
---|---|---|
ডেটা ভাগের ভিত্তি | কলামের মানের ভিত্তিতে ডেটা ভাগ করা হয়। | ডেটা একটি নির্দিষ্ট সংখ্যক বকেটে ভাগ করা হয়। |
ডেটা অর্গানাইজেশন | বিভিন্ন পার্টিশন (ফোল্ডার) হিসেবে অর্গানাইজ করা হয়। | একটি কলাম ভিত্তিক ভিন্ন ভিন্ন ফাইল ফোল্ডারে বিভক্ত। |
ব্যবহার | সাধারণত বড় ডেটাসেটগুলির জন্য পারফরম্যান্স উন্নত করে। | JOIN অপারেশন বা GROUP BY অপারেশন দ্রুত করে। |
কোয়েরি অপটিমাইজেশন | পার্টিশন ভিত্তিক ফিল্টারিং ও কোয়েরি অপটিমাইজেশন। | Bucketing কলাম ব্যবহার করে দ্রুত JOIN অপারেশন। |
Presto-তে Hive Partitioning এবং Bucketing ব্যবহার করলে ডেটার প্রক্রিয়াকরণ এবং কোয়েরি এক্সিকিউশন পারফরম্যান্স উল্লেখযোগ্যভাবে উন্নত হয়।
Read more